import java.util.ArrayList;
import java.util.List;

public class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> result = new ArrayList<>();

        // 生成每一行
        for (int i = 0; i < numRows; i++) {
            List<Integer> row = new ArrayList<>();

            // 每行的第一个和最后一个元素是 1
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    row.add(1);
                } else {
                    // 中间的元素是上一行的两个元素之和
                    row.add(result.get(i - 1).get(j - 1) + result.get(i - 1).get(j));
                }
            }
            result.add(row);
        }

        return result;
    }

    public static void main(String[] args) {
        Solution pt = new Solution();

        // 示例1：numRows = 5
        System.out.println(pt.generate(5));  // [[1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]

        // 示例2：numRows = 1
        System.out.println(pt.generate(1));  // [[1]]
    }
}
